import { CoCo } from "slightning-coco-widget"

const types: CoCo.Types = {
    type: "SLIGHTNING_COCO_WIDGET_TEST_COCO_EDITOR_TYPE_WIDGET",
    title: "测试编辑器类型",
    icon: "https://s-lightning.github.io/slightning-coco-widget/img/logo.png",
    isInvisibleWidget: true,
    isGlobalWidget: true,
    properties: [
        {
            key: "AlignKey",
            label: "AlignLabel",
            valueType: "string",
            defaultValue: "AlignDefaultValue",
            editorType: "Align"
        }, {
            key: "TextInputKey",
            label: "TextInputLabel",
            valueType: "string",
            defaultValue: "TextInputDefaultValue",
            editorType: "TextInput"
        }, {
            key: "InputNumberKey",
            label: "InputNumberLabel",
            valueType: "string",
            defaultValue: "InputNumberDefaultValue",
            editorType: "InputNumber"
        }, {
            key: "ColorKey",
            label: "ColorLabel",
            valueType: "string",
            defaultValue: "ColorDefaultValue",
            editorType: "Color"
        }, {
            key: "VisibleSwitchKey",
            label: "VisibleSwitchLabel",
            valueType: "string",
            defaultValue: "VisibleSwitchDefaultValue",
            editorType: "VisibleSwitch"
        }, {
            key: "DisabledSwitchKey",
            label: "DisabledSwitchLabel",
            valueType: "string",
            defaultValue: "DisabledSwitchDefaultValue",
            editorType: "DisabledSwitch"
        }, {
            key: "InputModeKey",
            label: "InputModeLabel",
            valueType: "string",
            defaultValue: "CONTAINED_NORMAL", // "OUTLINED_NORMAL" | "CONTAINED_NORMAL" | "CONTAINED_ROUND" | "OUTLINED_FLAT"
            editorType: "InputMode"
        }, {
            key: "InputSizeTypeKey",
            label: "InputSizeTypeLabel",
            valueType: "string",
            defaultValue: "MEDIUM", // "SMALL" | "MEDIUM" | "LARGE"
            editorType: "InputSizeType"
        }, {
            key: "InputTextGroupKey",
            label: "InputTextGroupLabel",
            valueType: "string",
            defaultValue: "InputTextGroupDefaultValue",
            editorType: "InputTextGroup"
        }, {
            key: "InputSettingGroupKey",
            label: "InputSettingGroupLabel",
            valueType: "string",
            defaultValue: "InputSettingGroupDefaultValue",
            editorType: "InputSettingGroup"
        }, {
            key: "InputBackgroundKey",
            label: "InputBackgroundLabel",
            valueType: "string",
            defaultValue: "InputBackgroundDefaultValue",
            editorType: "InputBackground"
        }, {
            key: "CoordinateKey",
            label: "CoordinateLabel",
            valueType: "string",
            defaultValue: "CoordinateDefaultValue",
            editorType: "Coordinate"
        }, {
            key: "SizeKey",
            label: "SizeLabel",
            valueType: "string",
            defaultValue: "SizeDefaultValue",
            editorType: "Size"
        }, {
            key: "TextAreaKey",
            label: "TextAreaLabel",
            valueType: "string",
            defaultValue: "TextAreaDefaultValue",
            editorType: "TextArea"
        }, {
            key: "FontFamilyKey",
            label: "FontFamilyLabel",
            valueType: "string",
            defaultValue: "FontFamilyDefaultValue",
            editorType: "FontFamily"
        }, {
            key: "BackgroundColorKey",
            label: "BackgroundColorLabel",
            valueType: "string",
            defaultValue: "BackgroundColorDefaultValue",
            editorType: "BackgroundColor"
        }, {
            key: "HorizontalAlignKey",
            label: "HorizontalAlignLabel",
            valueType: "string",
            defaultValue: "HorizontalAlignDefaultValue",
            editorType: "HorizontalAlign"
        }, {
            key: "VerticalAlignKey",
            label: "VerticalAlignLabel",
            valueType: "string",
            defaultValue: "VerticalAlignDefaultValue",
            editorType: "VerticalAlign"
        }, {
            key: "ButtonSizeTypeKey",
            label: "ButtonSizeTypeLabel",
            valueType: "string",
            defaultValue: "MEDIUM", // "TINY" | "SMALL" | "MEDIUM" | "LARGE" | "HUGE"
            editorType: "ButtonSizeType"
        }, {
            key: "ButtonTextGroupKey",
            label: "ButtonTextGroupLabel",
            valueType: "string",
            defaultValue: "ButtonTextGroupDefaultValue",
            editorType: "ButtonTextGroup"
        }, {
            key: "ButtonIconGroupKey",
            label: "ButtonIconGroupLabel",
            valueType: "string",
            defaultValue: "ButtonIconGroupDefaultValue",
            editorType: "ButtonIconGroup"
        }, {
            key: "ButtonBackgroundKey",
            label: "ButtonBackgroundLabel",
            valueType: "string",
            defaultValue: "ButtonBackgroundDefaultValue",
            editorType: "ButtonBackground"
        }, {
            key: "mode",
            label: "ButtonModeLabel",
            valueType: "string",
            defaultValue: "OUTLINED_TEXT", // "OUTLINED_TEXT" | "CONTAINED_TEXT" | "OUTLINED_ICON" | "CONTAINED_ICON"
            editorType: "ButtonMode"
        }, {
            key: "ChangeImageKey",
            label: "ChangeImageLabel",
            valueType: "string",
            defaultValue: "ChangeImageDefaultValue",
            editorType: "ChangeImage"
        }, {
            key: "WidgetTitleKey",
            label: "WidgetTitleLabel",
            valueType: "string",
            defaultValue: "WidgetTitleDefaultValue",
            editorType: "WidgetTitle"
        }, {
            key: "HeadlineKey",
            label: "HeadlineLabel",
            valueType: "string",
            defaultValue: "HeadlineDefaultValue",
            editorType: "Headline"
        }, {
            key: "OptionsKey",
            label: "OptionsLabel",
            valueType: "string",
            // @ts-ignore
            defaultValue: [ { content: "Options[number].content"} ],
            editorType: "Options"
        }, {
            key: "RadioModeKey",
            label: "RadioModeLabel",
            valueType: "string",
            defaultValue: "DEFAULT", // "DEFAULT" | "BUTTON"
            editorType: "RadioMode"
        }, {
            key: "RadioSizeTypeKey",
            label: "RadioSizeTypeLabel",
            valueType: "string",
            defaultValue: "MEDIUM", // "SMALL" | "MEDIUM" | "LARGE"
            editorType: "RadioSizeType"
        }, {
            key: "CheckboxSizeTypeKey",
            label: "CheckboxSizeTypeLabel",
            valueType: "string",
            defaultValue: "MEDIUM", // "SMALL" | "MEDIUM" | "LARGE"
            editorType: "CheckboxSizeType"
        }, {
            key: "SliderDirectionKey",
            label: "SliderDirectionLabel",
            valueType: "string",
            defaultValue: "SliderDirectionDefaultValue",
            editorType: "SliderDirection"
        },
        {
            key: "SwitchModeKey",
            label: "SwitchModeLabel",
            valueType: "string",
            defaultValue: "DEFAULT", // "DEFAULT" | "PRIMARY"
            editorType: "SwitchMode"
        },
        {
            key: "SwitchSizeTypeKey",
            label: "SwitchSizeTypeLabel",
            valueType: "string",
            defaultValue: "SwitchSizeTypeDefaultValue",
            editorType: "SwitchSizeType"
        },
        // {
        //     key: "SwitchBackgroundKey",
        //     label: "SwitchBackgroundLabel",
        //     valueType: "string",
        //     defaultValue: "SwitchBackgroundDefaultValue",
        //     editorType: "SwitchBackground"
        // },
        {
            key: "SliderModeKey",
            label: "SliderModeLabel",
            valueType: "string",
            defaultValue: "SliderModeDefaultValue",
            editorType: "SliderMode"
        }, {
            key: "SliderRangeKey",
            label: "SliderRangeLabel",
            valueType: "string",
            defaultValue: "SliderRangeDefaultValue",
            editorType: "SliderRange"
        }, {
            key: "NumberInputRowKey",
            label: "NumberInputRowLabel",
            valueType: "string",
            defaultValue: "NumberInputRowDefaultValue",
            editorType: "NumberInputRow"
        }, {
            key: "DegreeInputRowKey",
            label: "DegreeInputRowLabel",
            valueType: "string",
            defaultValue: "DegreeInputRowDefaultValue",
            editorType: "DegreeInputRow"
        }, {
            key: "FlipInputRowKey",
            label: "FlipInputRowLabel",
            valueType: "string",
            defaultValue: "FlipInputRowDefaultValue",
            editorType: "FlipInputRow"
        }, {
            key: "ScaleInputRowKey",
            label: "ScaleInputRowLabel",
            valueType: "string",
            defaultValue: "ScaleInputRowDefaultValue",
            editorType: "ScaleInputRow"
        }, {
            key: "StyleEditorSwitchKey",
            label: "StyleEditorSwitchLabel",
            valueType: "string",
            defaultValue: "StyleEditorSwitchDefaultValue",
            editorType: "StyleEditorSwitch"
        }, {
            key: "selectedStyleId",
            label: "selectedStyleIdLabel",
            valueType: "string",
            // @ts-ignore
            defaultValue: ["selectedStyleId"]
        }, {
            key: "actionList",
            label: "actionListLabel",
            valueType: "string",
            // @ts-ignore
            defaultValue: [{ styleList: [{ id: "selectedStyleId" }] }]
        }, {
            key: "AudioChangeSoundFileKey",
            label: "AudioChangeSoundFileLabel",
            valueType: "string",
            defaultValue: "AudioChangeSoundFileDefaultValue",
            editorType: "AudioChangeSoundFile"
        }, {
            key: "AudioVolumeKey",
            label: "AudioVolumeLabel",
            valueType: "string",
            defaultValue: "AudioVolumeDefaultValue",
            editorType: "AudioVolume"
        }, {
            key: "AudioRateKey",
            label: "AudioRateLabel",
            valueType: "string",
            defaultValue: "AudioRateDefaultValue",
            editorType: "AudioRate"
        }, {
            key: "LocalStorageFieldsKey",
            label: "LocalStorageFieldsLabel",
            valueType: "string",
            defaultValue: "LocalStorageFieldsDefaultValue",
            editorType: "LocalStorageFields"
        }, {
            key: "HttpBodyKey",
            label: "HttpBodyLabel",
            valueType: "string",
            defaultValue: "HttpBodyDefaultValue",
            editorType: "HttpBody"
        }, {
            key: "HttpHeaderKey",
            label: "HttpHeaderLabel",
            valueType: "string",
            defaultValue: "HttpHeaderDefaultValue",
            editorType: "HttpHeader"
        }, {
            key: "HttpParamsKey",
            label: "HttpParamsLabel",
            valueType: "string",
            defaultValue: "HttpParamsDefaultValue",
            editorType: "HttpParams"
        }, {
            key: "ListNewDataSourceKey",
            label: "ListNewDataSourceLabel",
            valueType: "string",
            defaultValue: "ListNewDataSourceDefaultValue",
            editorType: "ListNewDataSource"
        }, {
            key: "templateSlotMap",
            label: "templateSlotMapLabel",
            valueType: "string",
            // @ts-ignore
            defaultValue: { templateSlotMap: "templateSlotMap[string]" }
        }, {
            key: "ListViewerDataSourceKey",
            label: "ListViewerDataSourceLabel",
            valueType: "string",
            defaultValue: "ListViewerDataSourceDefaultValue",
            editorType: "ListViewerDataSource"
        }, {
            key: "ListViewerStyleTemplateKey",
            label: "ListViewerStyleTemplateLabel",
            valueType: "string",
            defaultValue: "ListViewerStyleTemplateDefaultValue",
            editorType: "ListViewerStyleTemplate"
        }, {
            key: "OptionSwitchKey",
            label: "OptionSwitchLabel",
            valueType: "string",
            defaultValue: "OptionSwitchDefaultValue",
            editorType: "OptionSwitch"
        }, {
            key: "PreviewImageKey",
            label: "PreviewImageLabel",
            valueType: "string",
            defaultValue: "PreviewImageDefaultValue",
            editorType: "PreviewImage"
        }, {
            key: "SelectKey",
            label: "SelectLabel",
            valueType: "string",
            defaultValue: "SelectDefaultValue",
            editorType: "Select"
        }, {
            key: "HelpUrlKey",
            label: "HelpUrlLabel",
            valueType: "string",
            defaultValue: "HelpUrlDefaultValue",
            editorType: "HelpUrl"
        }, {
            key: "CloudDbListKey",
            label: "CloudDbListLabel",
            valueType: "string",
            defaultValue: "CloudDbListDefaultValue",
            editorType: "CloudDbList"
        }, {
            key: "AntSwitchKey",
            label: "AntSwitchLabel",
            valueType: "string",
            defaultValue: "AntSwitchDefaultValue",
            editorType: "AntSwitch"
        }, {
            key: "WidgetOpacityKey",
            label: "WidgetOpacityLabel",
            valueType: "string",
            defaultValue: "WidgetOpacityDefaultValue",
            editorType: "WidgetOpacity"
        }, {
            key: "TextWidgetTextGroupKey",
            label: "TextWidgetTextGroupLabel",
            valueType: "string",
            defaultValue: "TextWidgetTextGroupDefaultValue",
            editorType: "TextWidgetTextGroup"
        }, {
            key: "TableData",
            label: "TableDataLabel",
            valueType: "string",
            // @ts-ignore
            defaultValue: {
                header: { TableData: "TableData.header[string]" },
                data: [
                    "TableData.data[number]"
                ]
            },
            editorType: "TableData"
        }, {
            key: "RichTextEditorKey",
            label: "RichTextEditorLabel",
            valueType: "string",
            defaultValue: "RichTextEditorDefaultValue",
            editorType: "RichTextEditor"
        }, {
            key: "NumberSliderKey",
            label: "NumberSliderLabel",
            valueType: "string",
            defaultValue: "NumberSliderDefaultValue",
            editorType: "NumberSlider"
        }, {
            key: "BrushDrawProcessKey",
            label: "BrushDrawProcessLabel",
            valueType: "string",
            defaultValue: "BrushDrawProcessDefaultValue",
            editorType: "BrushDrawProcess"
        }, {
            key: "BrushPenColorKey",
            label: "BrushPenColorLabel",
            valueType: "string",
            defaultValue: "BrushPenColorDefaultValue",
            editorType: "BrushPenColor"
        }, {
            key: "DictFieldsKey",
            label: "DictFieldsLabel",
            valueType: "string",
            defaultValue: "DictFieldsDefaultValue",
            editorType: "DictFields"
        }, {
            key: "TableFieldsKey",
            label: "TableFieldsLabel",
            valueType: "string",
            defaultValue: "TableFieldsDefaultValue",
            editorType: "TableFields"
        }, {
            key: "WarningFieldsKey",
            label: "WarningFieldsLabel",
            valueType: "string",
            defaultValue: "WarningFieldsDefaultValue",
            editorType: "WarningFields"
        }, {
            key: "BluetoothConnectKey",
            label: "BluetoothConnectLabel",
            valueType: "string",
            defaultValue: "BluetoothConnectDefaultValue",
            editorType: "BluetoothConnect"
        }, {
            key: "AqaraAuthKey",
            label: "AqaraAuthLabel",
            valueType: "string",
            defaultValue: "AqaraAuthDefaultValue",
            editorType: "AqaraAuth"
        }
    ],
    methods: [],
    events: []
}

class TestEditorTypeWidget extends CoCo.InvisibleWidget {
    public constructor(props: any) {
        super(props)
        console.log("属性", props)
    }
}

// CoCo.exportWidget(types, TestEditorTypeWidget)

exports.types = types
exports.widget = TestEditorTypeWidget
